<?php
defined('BASEPATH') OR exit('No direct script access allowed');

if ( ! function_exists('get_json') ){
	function _get_json($data)
	{
		$callback = isset($_GET['callback']) ? $_GET['callback'] : '';
		$data = json_encode($data);
		if ($callback && preg_match('~^(jQuery)[\d\_]+$~', $callback))
		{
			echo $callback.'('.$data.')';
		}
		else
		{
			echo $data;
		}
		exit;
	}
}

if ( ! function_exists('ip_long') ){
	function _ip_long($ip='')
	{
		$CI =& get_instance();
		return sprintf('%u', ip2long( $ip ? $ip : $CI->input->ip_address() ));
	}
}

function _current_url(){//获取当前URL
	$url = $_SERVER['PHP_SELF']; 
	$filename= substr( $url , strrpos($url , '/')+1 );
	return $filename;
}


function _get_db($group='xt')
{
	static $db=array();
	if (!isset($db[$group])){
		$CI =& get_instance();
		$db[$group] = $CI->load->database($group, TRUE);
		$db_name = 'xt_'.$group;
		$CI->$db_name = $db[$group];
	}
	return $db[$group];
}

function _get_config($key,$sort=false)
{
	$CI     =& get_instance();
    $config = $CI->config->item($key);
    //默认读取所有的类型，如果是 模特，机构，艺人 类型信息按排序显示的分类读取
    if (in_array($key,array('type','area_type'))&&$sort) {
        $sort = $CI->config->item('usertype_sort');
        $show_type = array();
        switch ($key){
            case 'type'://机构, 艺人
                unset($sort[1]);
                foreach ( $sort as $k=>$v) {
                    foreach ($v as $pos) {
                        $show_type[$k][$pos] = $config[$k][$pos];
                    }
                }
                break;
            case 'area_type';
                $sort = $sort[1];//模特
                foreach ($sort as $pos) {
                    $show_type[$pos] = $config[$pos];
                }
                break;
        }
        $config = $show_type;
    }
    return $config;
}

/**
 * 返回加密串
 * @param $val
 * @param $flag
 * @return unknown_type
 */
function _get_key_val($val, $flag=FALSE, $redirct=FALSE)
{
	//if (!$val)return $val;
	//暂不使用 session 对 id 做处理
	return $val;
	if ($flag)
	{
		$md5 = substr($val, -32);
		$str = substr($val,0,-32);
		// if(_get_config('encrypt_open'))
		// {
			/**
			 * 这里用到了session, 所以在 ini 设置的时间后会过期
			 * 这也是为什么有时候后台添加或修改会员信息时会造成会员信息混乱问题的原因
			 * php.ini 中原来设置的过期时间是 1440 秒(25分钟), 现在已经改为了 86400 秒(一天),算是缓解一下问题吧
			 * 以后可以考虑改为 csrf 来做安全提交处理
			*/
			if ( $md5 == md5(session_id().'!#%&)'.$str))
				return $str;
			else if($redirct)
			{
				redirect('/home/expired');
				return '';
			}
			else
				return '';
			
		// }
		// else
		// 	return $str;

	}
	else
	{
		return $val.md5(session_id().'!#%&)'.$val);
	}
}

/**
 * 加/解密串
 * @param $val 要操作的字符串
 * @param $flag 状态（true：解密，false：加密）
 */
function _code_val($val, $flag=FALSE)
{
	if (!$val)return '';
	if ($flag)
	{
		$md5 = substr($val, -32);
		$str = substr($val,0,-32);
		if ( $md5 == md5('!#%&)'.$str))
			return $str;
		else
			return '';
	}
	else
	{
		return $val.md5('!#%&)'.$val);
	}
}

function _get_website_img_show($img_src)
{
	if (strstr($img_src, 'http://')) {
		return $img_src;
	} else {
		if (substr($img_src, 0,1) == '.')
		{
// 			return base_url().substr($img_src, 1,strlen($img_src));
			return '/'.substr($img_src, 1,strlen($img_src));
		}
// 		return base_url().$img_src;
		return '/'.$img_src;
	}
}

function _get_cfg_path($key)
{
	$CI     =& get_instance();
	$arrCfgpath = $CI->config->item('cfg_path');
	if (!empty($arrCfgpath[$key])) {
// 		return base_url().$arrCfgpath[$key];
		return '/'.$arrCfgpath[$key];
    } else {
		return '';
    }
}

function _create_url($base_url, $params=array())
{
// 	if (substr($base_url, 0, 7) !='http://')$base_url = base_url($base_url);
	return $base_url._array_to_url($params);
}

function _array_to_url($params=array())
{
	$url = array();
	if ($params)
	foreach($params as $k=>$v)
	{
		if (strlen($v)==0)continue;
		$url[] = $k.'='.urlencode($v);
	}
	return $url ? '?'.join('&',$url):'';
}

function _get_page($name='page')
{
	$CI =& get_instance();
	$page = (int)$CI->input->get($name);
	return max($page,1);
}

function _is_empty($val)
{
	if(empty($val))
		return '';
	else
		return $val;
}



function XTM($model)
{
	$model = ucfirst($model).'_model';
	$CI =& get_instance();
	$CI->load->model($model);
	return $CI->$model;
}


function XTT($table)
{
	$model = 'Xt_model';
	$CI =& get_instance();
	$CI->load->model($model);
	return $CI->$model->set_table(strtolower($table));
}

//截断字符串
function _cut_str($sourcestr,$cutlength){
	$returnstr='';
	$i=0;
	$n=0;
	$str_length=strlen($sourcestr);//字符串的字节数
	while (($n<$cutlength) and ($i<=$str_length))
	{
		$temp_str=substr($sourcestr,$i,1);
		$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
		if ($ascnum>=224) //如果ASCII位高与224，
		{
			$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范，将3个连续的字符计为单个字符
			$i=$i+3; //实际Byte计为3
			$n++; //字串长度计1
		}
		elseif ($ascnum>=192) //如果ASCII位高与192，
		{
			$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范，将2个连续的字符计为单个字符
			$i=$i+2; //实际Byte计为2
			$n++; //字串长度计1
		}
		elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母，
		{
			$returnstr=$returnstr.substr($sourcestr,$i,1);
			$i=$i+1; //实际的Byte数仍计1个
			$n++; //但考虑整体美观，大写字母计成一个高位字符
		}
		else //其他情况下，包括小写字母和半角标点符号，
		{
			$returnstr=$returnstr.substr($sourcestr,$i,1);
			$i=$i+1; //实际的Byte数计1个
			$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
		}
	}
	if ($i < $str_length)
	{
		$returnstr = $returnstr."...";//超过长度时在尾处加上省略号
	}
	return $returnstr;
}





//缓存--begin
if(!function_exists('cache_read')){
    function _cache_read($file, $dir = '', $mode = '') {
        $file = _get_cache_file($file, $dir);
        if(!is_file($file)) return NULL;
        return $mode ? read_file($file) : include $file;
    }
}
  
if(!function_exists('cache_write')){
    function _cache_write($file, $string, $dir = '') {
        if(is_array($string)) {
            $string = "<?php return ".var_export($string, true)."; ?>";
            $string =  str_replace(array(chr(13), chr(10), "\n", "\r", "\t", '  '),array('', '', '', '', '', ''), $string);
        }
        $file = _get_cache_file($file, $dir);
        return write_file($file, $string);
    }
}
  
  
if(!function_exists('cache_delete')){
    function _cache_delete($file, $dir = '') {
        $file = _get_cache_file($file, $dir);
        return unlink($file);
    }
}
  
  
if(!function_exists('_get_cache_file')){
    function _get_cache_file($file, $dir) {
        $path = config_item('cache_path') ? config_item('cache_path') : APPPATH . 'cache/';
        return ($dir ? $path.$dir.'/'.$file : $path.$file);
    }
}
//缓存--end

/*
 * 根据用户提交的(swf/html)地址，获取优酷，土豆的swf播放地址
 * */
function _getVedioSwf ($url = '') {
	if(isset($url) && !empty($url)){
		preg_match_all('/http:\/\/(.*?)?\.(.*?)?\.com\/(.*)/',$url,$types);
	}else{
		return false;
	}
	$type = $types[2][0];
	$domain = $types[1][0];
	$isswf = strpos($types[3][0], 'v.swf') === false ? false : true;
	$method = substr($types[3][0],0,1);
	switch ($type){
		case 'youku' :
		    if($isswf){
		        $swf = $url;
		    }else{
		        if( $domain == 'player' ) {
		            $swf = $url;
		        }else if( $domain == 'v' ) {
		            preg_match_all('/http:\/\/v\.youku\.com\/v_show\/id_(.*)?\.html/',$url,$url_array);
		            $swf = 'http://player.youku.com/player.php/sid/'.str_replace('/','',$url_array[1][0]).'/v.swf';
		        }else{
		            $swf = $url;
		        }
		    }
			break;
		case 'tudou' :
			if($isswf){
				$swf = $url;
			}else{
				$method = $method == 'p' ? 'v' : $method ;
				preg_match_all('/http:\/\/www.tudou\.com\/(.*)?\/(.*)?/',$url,$url_array);
				$str_arr = explode('/',$url_array[1][0]);
				$count = count($str_arr);
				if($count == 1) {
					$id = explode('.',$url_array[2][0]);
				}else if($count == 2){
					$id = $str_arr[1];
				}else if($count == 3){
					$id = $str_arr[2];
				}
				$swf = 'http://www.tudou.com/'.$method.'/'.$id.'/v.swf';
			}
			break;
		case 'ku6':
			if($isswf){
				$swf = $url;
			}else{
				$method = 'refer';
				preg_match_all('/http:\/\/v.ku6\.com\/(.*)?\/(.*)?/',$url,$url_array);
				$str_arr = explode('/',$url_array[1][0]);
				$count = count($str_arr);
				if($count == 1) {
					$id = explode('.',$url_array[2][0]);
				}else if($count == 2){
					$id = $str_arr[1];
				}else if($count == 3){
					$id = $str_arr[2];
				}
				if (is_array($id))
				{
					$id = $id[0];
				}
				$swf = 'http://player.ku6.com/'.$method.'/'.$id.'/v.swf';
			}
			break;
		case '56':
			if($isswf){
				$swf = $url;
			}else{
				preg_match_all('/http:\/\/www.56\.com\/(.*)?\/(.*)?/',$url,$url_array);
				$str_arr = explode('/',$url_array[1][0]);
				$count = count($str_arr);
				if($count == 1) {
					$id = explode('.',$url_array[2][0]);
				}else if($count == 2){
					$id = $str_arr[1];
				}else if($count == 3){
					$id = $str_arr[2];
				}
				if (is_array($id))
				{
					$id = $id[0];
				}
				$swf = 'http://player.56.com/'.$id.'.swf';
			}
			break;
		default :
			$swf = $url;
			break;
	}
	return $swf;
}

//获取OSS图片、视频路径
function _getOssPath($url='')
{
    return 'http://mobooker.oss-cn-hangzhou.aliyuncs.com/'.$url; 
}


?>